package com.small.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * *依赖注入为当前类注入对象
 * <br/>如果方法内部调用别的方法，而调用方法是使用了切面并且属于begin级别的方法，这时
 * <br/>需要使用注入才能使调用方法正常执行增强，如果使用new出的对象则不会为调用方法启动方法增强
 * <br/>如果为接口注入必须传入指定实现类，保证单例注入，为普通对象注入无需传值
 * @author 乐乐
 *
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Inject {
  
  /**
   * <br/>如果注入接口需要传入接口的实现类  为空则注入失败
   * <br/>如果注入class则不可以传值
   * @return
   */
  Class<?> value() default Void.class;

}
